package accenture.may2014.springmvc.tp.CotizadorSpringTP.Cotizacion;

import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.ModelMap;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;

@Controller
@RequestMapping(value="/cotizacion")
public class CotizacionController {
	
	@Autowired
	private CotizacionRepository cotizacionRepository;

	@RequestMapping(value="/listarCotizacion")
	public void listar(ModelMap modelMap) {
		
		List<Cotizacion> listaCotizacion = cotizacionRepository.findAll();
		System.out.println("hay clientes " + listaCotizacion.size());
		modelMap.addAttribute("listaCotizacion", listaCotizacion);
	}

	@RequestMapping(value="/crear")
	public CotizacionForm crear() {
		System.out.println("crear GET");
		return new CotizacionForm();
	}
	
	@RequestMapping(value="/crear", method = RequestMethod.POST)
	public String crear(@ModelAttribute CotizacionForm cotizacionForm) {
		System.out.println("crear POST coti");
		cotizacionRepository.save(cotizacionForm.createCotizacion());
		return "redirect:/cliente/listar";
	}

	@RequestMapping(value="/editar")
	public CotizacionForm editar(@RequestParam(value="id") Long id) {
		System.out.println("editar GET");
		Cotizacion cotizacion = cotizacionRepository.findById(id);
		CotizacionForm cotizacionForm = CotizacionForm.newFrom(cotizacion);
		return cotizacionForm;
	}

	@RequestMapping(value="/editar", method = RequestMethod.POST)
	public String editar(@ModelAttribute CotizacionForm cotizacionForm) {
		try {
			System.out.println("crear POST");
			Cotizacion cotizacion = cotizacionRepository.findById(cotizacionForm.getId());
			cotizacionForm.actualizarCotizacion(cotizacion);
			cotizacionRepository.update(cotizacion);
			return "redirect:/cotizacion/listar";
		}catch (Exception e) {
			e.printStackTrace();
			throw e;
		}
	}
	@RequestMapping(value="/buscar", method = RequestMethod.GET)
	public CotizacionForm buscar(@RequestParam(value="nombre") String nombre) {
		Cotizacion cotizacion = cotizacionRepository.findLikeNombre(nombre);
		CotizacionForm cotizacionForm = CotizacionForm.newFrom(cotizacion);
		System.out.println("cliente " + cotizacionForm.getNombre());
		return cotizacionForm;
	}

	/*@RequestMapping(value="/eliminar", method = RequestMethod.POST)
	public String eliminar(@RequestParam (value="id") long id) {
		System.out.println("crear eliminar");
		Cliente cliente1 = clienteRepository.findById(id);
		clienteRepository.delete(cliente1);
		System.out.println("eliminado");
		return "redirect:/cliente/listar";
	}*/

	@RequestMapping(value="/eliminar", method = RequestMethod.POST)
	public String eliminar(@RequestParam (value="id") long id) {
		try {
			System.out.println("eliminar");
			Cotizacion cotizacion = cotizacionRepository.findById(id);
			cotizacionRepository.delete(cotizacion);
			System.out.println("eliminado");
			return "redirect:/cliente/listar";
		}catch (Exception e) {
			e.printStackTrace();
			throw e;
		}
	}
}